package com.yu.boot2.rabbit;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.UUID;

/**
 * @author zy
 * @date 2019-01-18 14:36
 **/
@Slf4j
@Component
public class RabbitSender {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /*
    rabbitTemplate.send(message);   //发消息，参数类型为org.springframework.amqp.core.Message
    rabbitTemplate.convertAndSend(object); //转换并发送消息。 将参数对象转换为org.springframework.amqp.core.Message后发送
    rabbitTemplate.convertSendAndReceive(message) //转换并发送消息,且等待消息者返回响应消息。
    */

    /**
     * 发送消息，不需要实现任何接口，供外部调用。
     */
    public void send(String exchange,String routingKey,String msg){
        //消息id 用来标记确认消息发送
        CorrelationData correlationId = new CorrelationData(UUID.randomUUID().toString());
        log.info("开始发送消息 : " + msg.toLowerCase());
        rabbitTemplate.convertAndSend(exchange,routingKey,msg,correlationId);
    }
}
